package cn.sciento.message.app.service;

import java.util.List;
import java.util.Map;

import cn.sciento.boot.message.entity.DingTalkSender;
import cn.sciento.boot.message.entity.MessageSender;
import cn.sciento.boot.message.entity.WeChatSender;

/**
 * 不区分短信邮件 发送消息
 *

 */
public interface RelSendMessageService {

    /**
     * 发送消息
     *
     * @param tempServerId 消息Id
     * @param lang         语言
     * @param typeCodeList 发送类型编码列表
     * @param args         消息构建参数
     * @param typeCode     类型代码
     */
    void relSendMessage(long tempServerId, String lang, List<String> typeCodeList, Map<String, String> args, String typeCode);

    /**
     * 发送消息 （备注：WebHook消息支持通用结构发送）
     *
     * @param messageSender 消息发送
     * @return 发送结果
     */
    Map<String, Integer> relSendMessage(MessageSender messageSender);

    /**
     * 发送消息 (返回发送结果，若服务端开启了异步发送则不返回)
     *
     * @param messageSender 消息发送
     * @return 发送结果
     */
    List<cn.sciento.message.domain.entity.Message> relSendMessageReceipt(MessageSender messageSender);

    /**
     * 发送微信消息
     *
     * @param weChatSender 消息发送
     * @return 发送结果
     */
    Map<String, Integer> relSendMessage(WeChatSender weChatSender);

    /**
     * 发送微信消息
     *
     * @param weChatSender 消息发送
     * @return 发送结果
     */
    List<cn.sciento.message.domain.entity.Message> relSendMessageReceipt(WeChatSender weChatSender);

    /**
     * 发送钉钉消息
     *
     * @param dingTalkSender 消息发送
     * @return 发送结果
     */
    Map<String, Integer> relSendMessage(DingTalkSender dingTalkSender);

    /**
     * 发送钉钉消息
     *
     * @param dingTalkSender 消息发送
     * @return 发送结果
     */
    List<cn.sciento.message.domain.entity.Message> relSendMessageReceipt(DingTalkSender dingTalkSender);
}
